package com.ylx.web.p;


import com.ylx.pojo.*;
import com.ylx.service.OrderService;
import com.ylx.service.OrderServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.*;


/**
 * 提交订单的页面 (订单结算页面)
 */
@WebServlet("/submitOrderServlet")
public class SubmitOrderServlet extends HttpServlet {

    /**
     * 登录情况下session中有用户信息，没有登录session没有用户信息]
     * 首先要判断用户的登录情况
     * 1、提交订单,从购物车中取出商品，去到订单结算页面（有登录的前提）
     * a、可以回到购物车页面
     * b、进行结算
     * 2、结算进入订单页面，产生订单（未支付页面）
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
         private OrderService orderService=new OrderServiceImpl();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

//        Calendar now = Calendar.getInstance();
//        Date date = TimeUtile.strToDateTime("2014-11-23 09:00:00");
//        Date dates = new Date(now.get(Calendar.YEAR) - 1900, now.get(Calendar.MONTH),
//                now.get(Calendar.DAY_OF_MONTH), date.getHours(), date.getMinutes(), date.getSeconds());
//        String t = Time.getDateFormat(now.getTime(),"yyyy-MM-dd HH:mm:ss");
//        System.out.println(t);
//
//        System.out.println(TimeUtile.date2Str(dates));


        Calendar now = Calendar.getInstance();
        String t = Time.getDateFormat(now.getTime(),"yyyy-MM-dd 08:00:00");
//        String t = Time.getDateFormat(now.getTime(),"yyyy-MM-dd HH:mm:ss");
        String t1 = Time.getDateFormat(now.getTime(),"yyyy-MM-dd 09:00:00");

        int result=t.compareTo(t1);
        if(result<0) {
            //获取session对象
            HttpSession session = request.getSession();
            //首先要判断用户的登录请情况
            User user = (User) session.getAttribute("user");
            Cart cart = (Cart) session.getAttribute("cart");
            //假如用户没有登录 那么他的user对象为空
            if (user == null) {
                response.sendRedirect("front/login.jsp");
                //无论是request.getRequestDispatcher、response.sendRedirect他实现页面跳转以后
                //原来的java类还是会继续执行后面的代码的，我们如果在代码中将执行了页面跳转那么就要结束不去运行后面的代码
                //加入return语句结束当前方法
                //return 语句用来结束当前的方法
                return;
            }
            //然后再去进行订单的产生 产生结算页面order_info.jsp
            //将商品从购物车中取出 然后放到order 订单对象中
            Order order = new Order();
            //产生订单的编号
            //利用UUID工具类产生订单编号
            String oid = UUID.randomUUID().toString();
            order.setOid(oid);
            order.setNAME(user.getNAME());
            order.setTel(user.getTel());
            order.setUid(user.getUid());
            double total = cart.getTotal();
            String total1 = String.valueOf(total);
            order.setTotal(total1);
            order.setStatus(0);
            //取出订单对象中的订单详细信息集合数组
            List<OrderItem> orderItems = order.getOrderItems();

            //将购物车中的商品取出 然后 放到我们的订单明细里面
            //访问购物车

            //将购物车中的每一项取出来
            //遍历访问map容器中的数据
            //map容器是不了直接用循环来访问的 要循环访问map需要将他转换成set类型的集合数据
            //获取 map容器的 entrySet值转换成set集合
            Set<Map.Entry<String, CartItem>> entry = cart.getCartItems().entrySet();
            for (Map.Entry<String, CartItem> cartItem : entry) {
                OrderItem orderItem = new OrderItem();
                orderItem.setItemId(UUID.randomUUID().toString());
                orderItem.setCount(cartItem.getValue().getBuyNum());
                orderItem.setOid(oid);
                orderItem.setGoods(cartItem.getValue().getGoods());
                int subTotal1 = cartItem.getValue().getSubTotal();
                String subTotal = String.valueOf(subTotal1);
                orderItem.setSubTotal(subTotal);
                orderItem.setSubTotal(subTotal);
                orderItem.setUnit(cartItem.getValue().getGoods().getUnit());
                orderItem.setPrice(cartItem.getValue().getGoods().getPrice());
                orderItem.setGoodsName(cartItem.getValue().getGoods().getGoodsName());
                orderItem.setId(cartItem.getValue().getGoods().getId());

                orderService.addOrderItem(orderItem);
                orderItems.add(orderItem);
            }
            order.setOrderItems(orderItems);
            OrderService orderService = new OrderServiceImpl();
            orderService.add(order);
            System.out.println(order);
            session.removeAttribute("cart");
            request.setAttribute("order", order);
            request.getRequestDispatcher("front/order_info.jsp").forward(request, response);
        }else {

            request.setAttribute("timeMsg", "时间已经过了九点");
            request.getRequestDispatcher("front/cart.jsp").forward(request, response);

        }

//        for(Map.Entry<String, CartItem> cartItem:entry){
//            OrderItem orderItem=new OrderItem();
//            orderItem.setItemId(UUID.randomUUID().toString());
//            orderItem.setCount(cartItem.getValue().getBuyNum());
//            orderItem.setOid(oid);
//            orderItem.setGoodsName(goods.getGoodsName());
//            orderItem.setUnit(goods.getUnit());
//            orderItem.setPrice(goods.getPrice());
//            orderItem.setGoods(cartItem.getValue().getGoods());

//             // 转换类型
//            int subTotal1 = cartItem.getValue().getSubTotal();
//            String subTotal= String.valueOf(subTotal1);
//            orderItem.setSubTotal(subTotal);
//            orderItems.add(orderItem);
//            orderService.addOrderItem(orderItem);
//
//        }
//
//        order.setOrderItems(orderItems);
//        System.out.println(order);
//        orderService.add(order);
//        request.removeAttribute("cart");
//        //将订单放入request作用域中
//        request.setAttribute("order",order);
//        //将数据发送到订单页面
//        request.getRequestDispatcher("front/order_info.jsp").forward(request,response);
    }
}
